package com.whfp.coky.api

import com.whfp.coky.api.response.BaseResult
import com.whfp.coky.api.response.ListBean
import com.whfp.coky.api.response.LoginStaffBean
import com.whfp.coky.other.Constants
import com.whfp.coky.ui.entry.model.ActivationBea
import com.whfp.coky.ui.main.model.DruggerBean
import com.whfp.coky.ui.main.model.TaskCount01Bean
import com.whfp.coky.ui.main.model.TaskCount02Bean
import com.whfp.coky.ui.main.model.TaskNonFixedBean
import com.whfp.coky.ui.main.vm.DuggerTaskCountVM
import com.whfp.coky.ui.main.vm.TaskFixedFragVM
import com.whfp.coky.ui.main.vm.TaskNonFixedFragVM
import com.whfp.coky.ui.task.model.*
import okhttp3.RequestBody
import retrofit2.http.*


interface ApiService {


//    @POST(URLConstants.LOGIN)
//    suspend fun login(@Field("username") username: String, @Field("password") password: String): BaseResult<String>
    /**
     * 工作人员登录（账号密码或手机号验证码登录）
     *
     * @param username  账号或手机号
     * @param passwd    密码或验证码
     * @param loginType 登录类型 1：手机号验证码登录  0：账号密码登录
     * @param loadType  登录类别 0：戒毒人员登录   1：社工登录
     */
    @FormUrlEncoded
    @POST(URLConstants.LOGIN)
    suspend fun loginStaff(
        @Field("username") username: String,
        @Field("passwd") password: String,
        @Field("ctDeviceBarcode") ctDeviceBarcode: String,
        @Field("loginType") loginType: Int,
        @Field("loadType") loadType: Int,
    ): BaseResult<LoginStaffBean>


    /**
     * APP激活注册
     *
     * @param msgBody  加密后的注册信息
     * @param callback
     */
    @POST
    suspend fun doRegister( @Url url: String = URLConstants.REGISTER,
        @Body body: HashMap<String,String>): BaseResult<ActivationBea>



    /**
     * 人员列表查询
     *
     * @param realName 戒毒人员姓名，可为空
     * @param callback
     */
    @POST(URLConstants.QUALITY_PERSONNEL_QUERY)
    suspend fun doTaskList01(@Body msgBody: TaskFixedFragVM.ReqDruggers): BaseResult<ListBean<DruggerBean>>

    /**
     * 查询非固定任务列表
     *
     * @param taskName  任务名称，可为空
     *                  //     * @param equipment 设备类型 手机:115 人证多合一一体机：116  集结号：117
     *                  //     * @param system    系统类型  安卓：118  鸿蒙：119 微信：120  支付宝：121  钉钉：122
     *                  pageIndex  pageSize
     * @param pageSize  当前页码
     * @param pageIndex 每页条数
     * @param callback
     */
    @POST(URLConstants.SEARCH_TASK_FGD)
    suspend fun doTaskList02(@Body msgBody: TaskNonFixedFragVM.ReqTasks,
                             @Query("pageIndex") pageIndex: Int,
                             @Query("pageSize") pageSize: Int = Constants.PAGE_SIZE): BaseResult<ListBean<TaskNonFixedBean>>

    /**
     * 获取固定任务的总任务统计
     */
    @POST(URLConstants.TASK_ZTJ_GD)
    suspend fun doTaskCount01(@Body msgBody: String = Constants.HTTP_NO_PARAMA): BaseResult<TaskCount01Bean>
    /**
     * 获取非固定任务的总任务统计
     */
    @POST(URLConstants.TASK_ZTJ_FGD)
    suspend fun doTaskCount02(@Body msgBody: String = Constants.HTTP_NO_PARAMA): BaseResult<TaskCount02Bean>


    /**
     * 单个戒毒人员的固定任务统计
     * @param manId    选中的戒毒人员列表
     *                 //     * @param equipment 设备类型 手机:115 人证多合一一体机：116  集结号：117
     *                 //     * @param system    系统类型  安卓：118  鸿蒙：119 微信：120  支付宝：121  钉钉：122
     * @param callback
     */
    @POST(URLConstants.CORRESPONDING_PERSONNEL)
    suspend fun doDruggerTaskCount(@Body msgBody: DuggerTaskCountVM.ReqTaskCount): BaseResult<TaskCount01Bean>


    /**
     * 根据任务组查询对应的子任务列表
     *
     * @param taskId   任务组ID
     * @param callback
     */
    @GET(URLConstants.ZRWCX)
    suspend fun doTaskList(@Query("taskId") taskId: String) :  BaseResult<List<TaskChildBean>>


    /**
     * 获取云端标曲列表
     *
     * @param pageIndex 当前页数 从1开始
     * @param pageSize  每页条数
     * @param bqBh      标曲编号，可为空
     * @param bqName    标曲名称，可为空
     * @param callback
     */
    @GET
    suspend fun doGetCloudBQ(
        @Url url: String = Constants.URL_CLOUD_BQ,
        @Query("pageIndex") pageIndex: Int,
        @Query("pageSize") pageSize: Int = Constants.PAGE_SIZE,
        @Query("bqBh") bqBh: String = "",
        @Query("bqName") bqName: String,
    ):BaseResult<ListBean<FluorProjCloudBean>>


    /**
     * 设备验证
      * @param deviceMac  当前控制设备的mac地址
     * @param deviceInfo 扫到的设备上的码的内容
     */
    @POST
    suspend fun doDevCheck(
        @Url url: String = URLConstants.CHECK_DEVICE,
        @Body body: RequestBody
    ):BaseResult<CheckDeviceBean>

    /**
     * 设备验证
     * @param deviceMac  当前控制设备的mac地址
     * @param deviceInfo 扫到的设备上的码的内容
     */
    @POST(URLConstants.SEARCH_BQ)
    suspend fun doCloudBQ(
        @Body body: RequestBody
    ):BaseResult<SearchBQBean>

    @POST(URLConstants.SEARCH_BQ)
    suspend fun doCloudBQMap(
        @Body body: HashMap<String,String>
    ):BaseResult<SearchBQBean>


    /**
     * 查询要打印的二维吗
     *
     * @param detailId 当前子任务的ID
     *                 //     * @param mac      当前设备MAC地址
     *                 //     * @param sn       当前设备序列号（如果是手机就传手机的MAC地址）
     * @param callback
     */
    @POST(URLConstants.SEARCH_EWM)
    suspend fun doSearchQrCode(@Body body: RequestBody):BaseResult<SearchCodePrintBean>




}